Modern computer systems employ storage systems and devices to hold data and/or instructions. Common examples of storage systems in a real-time micro-processor-based product include, for example, magnetic media (e.g., disks), random access memory (RAM), and read-only memory (ROM). Storage space is typically an important and expensive commodity, regardless of where the storage space is located relative to the central processing unit (CPU) or other processing unit executing the stored instructions or otherwise acting on the stored data. Ordinarily, ROM storage space is often at an even higher premium in both physical layout and product cost than RAM or disk space. Accordingly, modern computer systems typically seek to reduce the amount of required ROM space while simultaneously meeting code size and other performance limitations of a real-time system.
One method to reduce the size of a file or program in storage is to employ a codec (compression/decompression algorithm). One example of a modern codec is the Limpel-Ziv-Welsh (LZW) algorithm. Generally, codecs provide a standardized method to encode data/instructions for storage or transmission and to decode data/instructions for manipulation. Storage codecs in particular are typically designed to reduce the size-on-disk (or, generally, size-in-storage) of the target files.
Executable files, however, are sometimes loaded into memory as a series of instructions in a program image. Typical codecs apply a cumbersome overhead that reduces the effectiveness of the codec for such program images. For example, an increased program size, slower execution speed, and in some cases increased storage space can all result from an inefficient codec.
Therefore, what is required is a system, apparatus, and/or method that provides improved compression/decompression performance that overcomes at least some of the limitations of previous systems and/or methods.